home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_a / logo.act < prev    next >
Text File  |  1995-04-22  |  9KB  |  467 lines

  1. ; CIS Notice: 
  2.         
  3. ; I am providing the program for you 
  4. ; to look at and maybe help you get 
  5. ; started with ACTION!.  It was 
  6. ; written 'quick and dirty' and as 
  7. ; such does not have many comments 
  8. ; and is not the best of code in many 
  9. ; places.  Feel free to show it to 
  10. ; anyone you like as long as you keep 
  11. ; the copyright notice. 
  12.  
  13. ; In case you are interested, this is 
  14. ; the company logo for Action 
  15. ; Computer Services (ACS). 
  16.  
  17. ;      - Clinton Parker 70435,625 
  18.  
  19. ; PS: Hit ESC to exit program 
  20.  
  21.  
  22. ; Copyright 1983 by Action Computer Services 
  23.  
  24. ; last modified April 13, 1983 
  25.  
  26. MODULE ; LOGO.ACT 
  27.  
  28. DEFINE RTI = "$40", 
  29.        PHA = "$48", 
  30.        PLA = "$68", 
  31.        TXA = "$8A", 
  32.        TAX = "$AA", 
  33.        TYA = "$98", 
  34.        TAY = "$A8" 
  35.  
  36. BYTE start 
  37. BYTE ARRAY display 
  38. CARD ARRAY yLoc(96) 
  39.  
  40.  
  41. PROC NMI() 
  42.   BYTE color, cnt 
  43.   BYTE COLPF1=$D017, WSYNC=$D40A, 
  44.        VCOUNT=$D40B, COLPF2=$D018, 
  45.        COLPF0=$D016 
  46.   BYTE ARRAY col(0)=[$68 $C $96 $38] 
  47.  
  48.   [PHA TXA PHA TYA PHA] 
  49.  
  50.   IF VCOUNT=7 THEN 
  51.     color = start 
  52.     start = start - 1 
  53.     IF (start&$1F)=0 THEN cnt = cnt + 1 FI 
  54.   FI 
  55.  
  56.   color = color - 2 
  57.   WSYNC = 1 
  58.   COLPF0 = color 
  59.   COLPF1 = color 
  60.   COLPF2 = col((cnt + VCOUNT) & 3) 
  61. [PLA TAY PLA TAX PLA RTI] 
  62.  
  63.  
  64. PROC Background() 
  65.   BYTE COLBK=$D01A, VCOUNT=$D40B, WSYNC=$D40A 
  66.  
  67.   [PHA TXA PHA TYA PHA] 
  68.   WSYNC = 0 
  69.   IF VCOUNT>50 THEN 
  70.     COLBK = 0 
  71.   ELSE 
  72.     COLBK = $D6 
  73.   FI 
  74. [PLA TAY PLA TAX PLA RTI] 
  75.  
  76.  
  77. PROC Init7() 
  78.   BYTE i 
  79.   CARD screen, scrloc=88 
  80.   
  81.   Graphics(23) 
  82.   SetColor(0,2,10) 
  83.   SetColor(1,0,12) 
  84.   SetColor(2,0,12) 
  85.  
  86.   display = scrloc 
  87.   screen = scrloc 
  88.   i = 0 
  89.   WHILE i<96 DO 
  90.     yLoc(i) = screen 
  91.     screen = screen + 40 
  92.     i = i + 1 
  93.   OD 
  94. RETURN 
  95.  
  96.  
  97. PROC Plot7(BYTE x, y) 
  98.   BYTE ARRAY pos, bm(0)=[$C0$30$C$3], 
  99.     cm(0)=[$0 $55 $AA $FF] 
  100.  
  101.   pos = yLoc(y) 
  102.  
  103.   pos(x RSH 2) ==% (bm(x&3)&cm(color)) 
  104. RETURN 
  105.  
  106.  
  107. PROC VLine(BYTE x, y1, y2) 
  108.   WHILE y1#y2 DO 
  109.     Plot7(x, y1) 
  110.     y1 = y1 + 1 
  111.   OD 
  112. RETURN 
  113.  
  114.  
  115. PROC HLine(BYTE x1, x2, y) 
  116.   WHILE x1#x2 DO 
  117.     Plot7(x1, y) 
  118.     x1 = x1 + 1 
  119.   OD 
  120. RETURN 
  121.  
  122.  
  123. PROC DLine(BYTE x1, x2, y1) 
  124.   BYTE incr 
  125.  
  126.   incr = 1 
  127.   IF x2<x1 THEN incr = $FF FI 
  128.  
  129.   WHILE x1#x2 DO 
  130.     Plot7(x1, y1) 
  131.     x1 = x1 + incr 
  132.     Plot7(x1, y1) 
  133.     y1 = y1 + 1    
  134.   OD 
  135. RETURN 
  136.  
  137.  
  138. PROC Dot(BYTE x, y) 
  139.   BYTE i    
  140.  
  141.   i = 0  
  142.   WHILE i<4 DO 
  143.     Plot7(x+1, y)   Plot7(x+2, y) 
  144.     IF i=1 OR i=2 THEN 
  145.       Plot7(x, y)   Plot7(x+3, y) 
  146.     FI 
  147.     y = y + 1 
  148.     i = i + 1 
  149.   OD 
  150. RETURN 
  151.  
  152.  
  153. PROC Pad(BYTE x, y) 
  154.   BYTE i 
  155.  
  156.   i = 0 
  157.   WHILE i<4 DO 
  158.     Plot7(x, y) 
  159.     Plot7(x+1, y) 
  160.     Plot7(x+2, y) 
  161.     y = y + 1 
  162.     i = i + 1 
  163.   OD 
  164. RETURN 
  165.  
  166.  
  167. PROC LineX(BYTE x1, y1, x2, y2) 
  168.   Plot(x1, y1) 
  169.   DrawTo(x2, y2) 
  170.   Plot(x1+1, y1) 
  171.   DrawTo(x2+1, y2) 
  172. RETURN 
  173.  
  174.  
  175. PROC LineY(BYTE x1, y1, x2, y2) 
  176.   Plot(x1, y1) 
  177.   DrawTo(x2, y2) 
  178. ; Plot(x1, y1+1) 
  179. ; DrawTo(x2, y2+1) 
  180. RETURN 
  181.  
  182.  
  183. PROC Curve(BYTE x, y) 
  184. ; Plot7(x-1, y-1) 
  185.   VLine(x, y-1, y+2) 
  186.   VLine(x+1, y-1, y+2) 
  187.   VLine(x+2, y-2, y+1) 
  188.   y = y - 4 
  189.   VLine(x+3, y, y+5) 
  190.   VLine(x+4, y, y+4) 
  191.   VLine(x+5, y, y+3) 
  192.   Plot7(x+6, y)    
  193.   Plot7(x+6, y+1) 
  194. RETURN 
  195.  
  196.  
  197. PROC Draw() 
  198.   BYTE i, j, k  
  199.   CARD x 
  200.  
  201. ; draw fingers 
  202.   i = 0 
  203.   x = 160 
  204.   WHILE i<15 DO 
  205.     j = 0 
  206.     WHILE j<3 DO 
  207.       k = 0 
  208.       WHILE k<4 DO 
  209.         display(x+k) = $55 
  210.         k = k + 1 
  211.       OD 
  212.       x = x + 40 
  213.       j = j + 1 
  214.     OD 
  215.     x = x + 120 
  216.     i = i + 1 
  217.   OD 
  218.  
  219. ; draw the pads 
  220.   i = 64 
  221.   WHILE i<112 DO 
  222.     Pad(i, 22) 
  223.     i = i + 6 
  224.   OD 
  225.   Pad(142, 22) 
  226.   Pad(70, 62) 
  227.   Pad(76, 62) 
  228.   Pad(94, 62) 
  229.   Pad(106, 62) 
  230.   Pad(142, 62) 
  231.  
  232. ; finger 1, 15 connections 
  233.   i = 0 
  234.   WHILE i<4 DO 
  235.     display(204+i) = $AA 
  236.     display(3564+i) = $AA  
  237.     i = i + 1 
  238.   OD 
  239.   Dot(31, 3) 
  240.   Dot(29, 88) 
  241.  
  242. ; finger 2 connection (A3) 
  243.   LineX(16, 11, 44, 8) 
  244.   HLine(44, 105, 8) 
  245.   DLine(105, 107, 8) 
  246.   VLine(107, 10, 23) 
  247.  
  248. ; finger 3 connection (A2) 
  249.   LineX(16, 17, 48, 11) 
  250.   HLine(48, 99, 11) 
  251.   DLine(99, 101, 11) 
  252.   VLine(101, 13, 23) 
  253.  
  254. ; finger 4 connection (A1) 
  255.   LineX(16, 23, 52, 14) 
  256.   HLine(52, 93, 14) 
  257.   DLine(93, 95, 14) 
  258.   VLine(95, 16, 23) 
  259.  
  260. ; finger 5 connection (A0) 
  261.   LineX(16, 29, 56, 17) 
  262.   HLine(56, 87, 17) 
  263.   DLine(87, 89, 17) 
  264.   VLine(89, 19, 23) 
  265.  
  266. ; finger 6 connection (D4) 
  267.   HLine(16, 60, 35) 
  268.   LineY(60, 35, 71, 62) 
  269.               
  270. ; finger 7 connection (D5) 
  271.   HLine(16, 56, 41) 
  272.   DLine(56, 58, 41) 
  273.   VLine(58, 43, 66) 
  274.   DLine(58, 60, 66) 
  275.   HLine(60, 76, 68) 
  276.   DLine(77, 75, 66) 
  277.  
  278. ; finger 8 connection (D2) 
  279.   HLine(16, 34, 47) 
  280.   DLine(34, 58, 47) 
  281.   HLine(58, 79, 71) 
  282.   DLine(80, 78, 70) 
  283.   VLine(80, 60, 70) 
  284.   LineY(80, 60, 71, 25) 
  285.  
  286. ; finger 9 connection (D1) 
  287.   HLine(16, 34, 53) 
  288.   DLine(34, 55, 53) 
  289.   HLine(55, 85, 74) 
  290.   DLine(86, 84, 73) 
  291.   VLine(86, 60, 73) 
  292.   LineY(86, 60, 77, 25) 
  293.  
  294. ; finger 10 connection (D0) 
  295.   HLine(16, 20, 59) 
  296.   DLine(23, 19, 56) 
  297.   HLine(24, 32, 56) 
  298.   DLine(32, 53, 56) 
  299.   HLine(53, 91, 77) 
  300.   DLine(92, 90, 76) 
  301.   VLine(92, 60, 76) 
  302.   LineY(92, 60, 83, 25) 
  303.  
  304. ; finger 11 connection (D6) 
  305.   HLine(16, 24, 65) 
  306.   DLine(27, 23, 62) 
  307.   Dot(26, 60) 
  308.  
  309. ; finger 12 connection (CS) 
  310.   DLine(107, 92, 66) 
  311.   HLine(50, 92, 80) 
  312.   DLine(40, 50, 71) 
  313.   HLine(16, 40, 71) 
  314.   VLine(95, 66, 78) 
  315.  
  316. ; finger 13 connection (+5) 
  317.   Plot(16, 76) 
  318.   DrawTo(50, 86) 
  319.   Plot(16, 77) 
  320.   DrawTo(50, 87) 
  321.   Plot(16, 78) 
  322.   DrawTo(50, 88) 
  323.   HLine(50, 149, 86) 
  324.   HLine(50, 149, 87) 
  325.   HLine(50, 149, 88) 
  326.   Curve(149, 86) 
  327.   i = 0 
  328.   WHILE i<4 DO 
  329.     VLine(153+i, 47, 82) 
  330.     DLine(143+i, 153+i, 37) 
  331.     VLine(143+i, 22, 37) 
  332.  
  333.     HLine(142, 155, 62+i) 
  334.  
  335.     VLine(153+i, 5, 17) ; ground pad 
  336.  
  337.     i = i + 1 
  338.   OD 
  339.   HLine(143, 146, 21) 
  340.   Plot7(141, 63) 
  341.   Plot7(141, 64) 
  342.   Curve(149, 62) 
  343.   HLine(149, 153, 66) 
  344.   VLine(152, 66, 70) 
  345.   Plot7(151, 67) 
  346.  
  347. ; finger 14 connection (cart. select) 
  348.   HLine(16, 35, 82) 
  349.   HLine(16, 38, 83) 
  350.   HLine(16, 41, 84) 
  351.  
  352. ; ground pads  
  353.   Dot(153, 3) 
  354.   Dot(153, 16) 
  355.   HLine(62, 64, 23) 
  356.   HLine(62, 64, 24) 
  357.  
  358. RETURN 
  359.  
  360.  
  361. PROC Letter(BYTE ARRAY pts, BYTE x, y, delay) 
  362.   BYTE i, dx, dy 
  363.  
  364.   WHILE 1 DO 
  365.     dx = pts^ 
  366.     pts = pts + 1 
  367.     dy = pts^ 
  368.     pts = pts + 1 
  369.     IF dx=$FF THEN EXIT FI 
  370.     Plot7(x+dx, y+dy) 
  371.  
  372. ;   i = 0 
  373. ;   WHILE i<delay DO i==+1*1*1 OD 
  374.   OD 
  375. RETURN 
  376.  
  377.  
  378. PROC Logo() 
  379.   CHAR CH=$2FC 
  380.   BYTE x, NMIEN=$D40E, COLBK=$D01A 
  381.   CARD j, old, SDLST=$230, VDSLST=$200 
  382.   BYTE i 
  383.   BYTE ARRAY dlist 
  384.   BYTE ARRAY side(0)=[2 0 1 0 0 0 0 1 0 2 1 2 2 2 2 3 2 4 1 4 0 4 
  385.     4 0 4 1 4 2 4 3 4 4 
  386.     6 0 6 1 6 2 6 3 6 4 7 0 8 1 8 2 8 3 7 4 
  387.     10 0 10 1 10 2 10 3 10 4 11 0 12 0 11 2 11 4 12 4 
  388.     18 4 18 3 19 2 19 1 20 0 21 1 21 2 22 3 22 4 20 2 $FF] 
  389.   BYTE ARRAY copyright(0)=[5 0 4 0 3 0 2 0 1 1 0 2 0 3 0 4 0 5 1 6 2 7 3 7 4 7 5 7 6 6 7 5 7 4 7 3 7 2 6 1 
  390.     4 2 3 2 2 3 2 4 3 5 4 5 $FF] 
  391.   BYTE ARRAY A(0)=[0 8 1 8 0 7 1 7 0 6 1 6 2 6 1 5 2 5 1 4 2 4 1 3 2 3 3 3 2 2 3 2 2 1 3 1 3 0 4 0 4 1 5 0 5 1 6 1 5 2 6 2 
  392.     5 3 6 3 7 3 6 4 7 4 6 5 7 5 6 6 7 6 8 6 7 7 8 7 7 8 8 8 3 5 4 5 5 5 $FF] 
  393.   BYTE ARRAY C(0)=[7 2 6 2 6 1 5 1 5 0 4 0 3 0 2 0 2 1 1 1 1 2 0 2 1 3 0 3 1 4 0 4 0 5 1 5 0 6 1 6 1 7 2 7 2 8 3 8 4 8 5 8 5 7 6 7 6 6 7 6  
  394.   BYTE ARRAY S(0)=[6 2 5 2 5 1 4 1 4 0 3 0 2 0 2 1 1 1 0 2 1 2 1 3 2 3 2 4 3 4 4 4 4 5 5 5 6 6 5 6 5 7 4 7 4 8 3 8 2 8 2 7 1 7 1 6 0 6 $FF] 
  395.   BYTE ARRAY rev(0)=[0 0 0 1 0 2 0 3 0 4 0 5 0 6 1 6 1 5 1 4 1 3 1 2 1 1 1 0 2 0 3 0 4 1 4 2 3 3 2 3 3 4 4 5 4 6 
  396.     7 0 8 0 7 1 8 1 7 2 8 2 7 3 8 3 7 4 8 4 7 5 8 5 7 6 8 6 11 0 10 0 9 0 10 3 9 3 11 6 10 6 9 6 
  397.     14 0 15 0 14 1 15 1 14 2 15 2 15 3 16 3 15 4 16 4 16 5 16 6 17 6 17 5 18 4 18 3 19 2 19 1 19 0 
  398.     22 5 21 5 21 6 22 6 
  399.     27 6 28 6 27 5 28 5 27 4 28 4 28 3 29 3 28 2 29 2 29 1 29 0 30 0 30 1 31 2 31 3 32 4 32 5 32 6 29 5 30 5 31 5 $FF] 
  400.  
  401.   Init7() 
  402.   color = 2 
  403.  
  404.   NMIEN = $40 
  405.   old = VDSLST 
  406.   VDSLST = Background 
  407.   dlist = SDLST 
  408.   dlist(6) ==% $80 
  409.   dlist(97) ==% $80 
  410.   NMIEN = $C0 
  411.  
  412.   Draw() 
  413.  
  414. ; j = 0 
  415. ; WHILE j<10000 DO j==+1 OD 
  416.  
  417.   color = 3 
  418.   Letter(side, 120, 10, 50) 
  419.   Letter(rev, 105, 75, 50) 
  420.   Letter(copyright, 96, 41, 100) 
  421.   Letter(A, 109, 41, 100) 
  422.   Letter(C, 121, 41, 100) 
  423.   Letter(S, 132, 41, 100) 
  424.  
  425.   j = 0 
  426.   WHILE j<2000 AND CH=$FF DO